#include <Arduino.h>
#include <U8g2lib.h>

// 定义 OLED 显示屏对象（I2C 方式，适配 Wemos LOLIN32 Lite 的引脚）
// 屏参：128x64、I2C 地址 0x3C（多数模块默认，若不同需改）、复位脚设为 U8X8_PIN_NONE（可不接复位时用）
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(
    U8G2_R0,          // 屏幕旋转方向（R0=不旋转，R1/R2/R3=旋转）
    /* SCL= */ 15,    // Wemos D15 接 OLED SCL
    /* SDA= */ 2,     // Wemos D2 接 OLED SDA
    U8X8_PIN_NONE     // 复位脚不使用（若接了复位脚，填对应 GPIO 如 3）
);

void setup() {
  // 初始化 OLED 显示屏
  u8g2.begin();
  
  // 清屏（清空缓冲区）
  u8g2.clearBuffer();
  
  // 设置字体（内置字体，可换其他，如 u8g2_font_ncenB14_tr 等）
  u8g2.setFont(u8g2_font_ncenB08_tr);  // 8x16 像素字体，紧凑清晰
}

void loop() {
  // 清缓冲区（每次刷新前建议清空，避免残留）
  u8g2.clearBuffer();
  
  // -------------------- 测试文本显示 --------------------
  // 设置光标位置（x=0, y=10），从左上角开始
  u8g2.setCursor(0, 10);
  u8g2.print("Hello Wemos!");  // 显示文本
  
  u8g2.setCursor(0, 25);
  u8g2.print("OLED 12864 Test");  // 第二行文本

  u8g2.setCursor(0, 40);
  u8g2.print("U8g2 Library");   // 第三行文本

  // -------------------- 测试图形显示 --------------------
  // 画矩形：x=10, y=50, 宽=30, 高=10
  u8g2.drawFrame(10, 50, 30, 10);

  // 画填充矩形：x=50, y=50, 宽=30, 高=10
  u8g2.drawBox(50, 50, 30, 10);

  // 画圆形：x=90, y=55, 半径=5
  u8g2.drawCircle(90, 55, 5);

  // 画线段：从 (10,62) 到 (118,62)
  u8g2.drawHLine(10, 62, 108);

  // -------------------- 发送缓冲区内容到屏幕显示 --------------------
  u8g2.sendBuffer();

  // 延时停留，方便观察
  delay(2000);
}
